package com.hougong.lineclient.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.List;

public class ProtocolUtils {
    public static final Logger LOGGER=LoggerFactory.getLogger(ProtocolUtils.class);
    private ProtocolUtils(){}

    /**
     * 计算校验位
     * @param needCheck 计算的数据
     * @return
     */
    public static byte computeCheck(byte[] needCheck,int start,int len){
        byte check=needCheck[0];
        for(int i=1;i<len;i++){
            check=(byte)(check^needCheck[i]);
        }
//        LOGGER.info("计算得到的校验位是："+check);
        return check;
    }

    /**
     * 转义 6c-->6d02 |   6d--->6d01
     * @param original  原始数据 不包含首尾两个标志码
     * @return 新的转义后的字节数组
     */
    public  static byte[] escape(byte[] original){
        List<Byte> list=new ArrayList<Byte>();
        for (byte b:original){
            if(b==0x6C){
                list.add((byte) 0x6D);
                list.add((byte) 0x02);
            }else if(b==0x6D){
                list.add((byte) 0x6D);
                list.add((byte) 0x01);
            }else {
                list.add(b);
            }
        }
        byte[] byteArr=new byte[list.size()];
        for(int i=0;i<byteArr.length;i++){
            byteArr[i]=list.get(i);
        }
        return byteArr;
    }

}
